/******************** (C) COPYRIGHT 2018 SONiX *******************************
* COMPANY:			SONiX
* DATE:					2018/03
* AUTHOR:				SA1
* IC:						SN32F280
* DESCRIPTION:	PFPA related functions.
*____________________________________________________________________________
*	REVISION	Date				User		Description
*	1.0				2018/03/05	SA1			1. First release
*
*____________________________________________________________________________
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS TIME TO MARKET.
* SONiX SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL 
* DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF SUCH SOFTWARE
* AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN 
* IN CONNECTION WITH THEIR PRODUCTS.
*****************************************************************************/


/*_____ I N C L U D E S ____________________________________________________*/
#include <SN32F280.h>


/*
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
*/

/*--------------------- Clock Configuration ----------------------------------
//
//<e0> UART0
//		<o16.2..3> URXD0=
//					<0=> P0.11
//					<1=> P2.0
//					<2=> P3.2
//		<o16.0..1> UTXD0=
//					<0=> P0.10
//					<1=> P2.1
//					<2=> P3.1
//</e>
//<e1> UART1
//		<o16.6..7> URXD1=
//					<0=> P1.8
//					<1=> P2.3
//					<2=> P1.17
//					<3=> P3.4
//		<o16.4..5> UTXD1=
//					<0=> P1.9
//					<1=> P2.2
//					<2=> P1.16
//					<3=> P3.6
//</e>
//<e2> UART2
//		<o16.10..11> URXD2=
//					<0=> P0.2
//					<1=> P1.3
//					<2=> P2.15
//					<3=> P1.6
//		<o16.8..9> UTXD2=
//					<0=> P0.1
//					<1=> P1.4
//					<2=> P2.14
//					<3=> P1.7
//</e>
//<e3> UART3
//		<o16.14..15> URXD3=
//					<0=> P3.13
//					<1=> P1.6
//					<2=> P2.1
//		<o16.12..13> UTXD3=
//					<0=> P3.12
//					<1=> P1.7
//					<2=> P2.0
//</e>
//<e4> SPI0
//		<o17.4..5> SCK0=
//					<0=> P0.0
//					<1=> P2.5
//					<2=> P1.0
//					<3=> P3.0
//		<o17.6..7> SEL0=
//					<0=> P0.1
//					<1=> P2.4
//					<2=> P1.8
//					<3=> P1.7
//		<o17.0..1> MISO0=
//					<0=> P0.2
//					<1=> P2.6
//					<2=> P1.1
//					<3=> P3.1
//		<o17.2..3> MOSI0=
//					<0=> P0.3
//					<1=> P2.7
//					<2=> P1.2
//					<3=> P3.2
//</e>
//<e5> SPI1
//		<o17.12..13> SCK1=
//					<0=> P1.13
//					<1=> P1.8
//					<2=> P0.1
//					<3=> P0.12
//		<o17.14..15> SEL1=
//					<0=> P1.12
//					<1=> P1.9
//					<2=> P1.5
//					<3=> P0.13
//		<o17.8..9> MISO1=
//					<0=> P1.14
//					<1=> P1.10
//					<2=> P2.12
//					<3=> P3.14
//		<o17.10..11> MOSI1=
//					<0=> P1.15
//					<1=> P1.11
//					<2=> P2.13
//					<3=> P3.15
//</e>
//<e6> I2C0
//		<o18.2..3> SCL0=
//					<0=> P0.6
//					<1=> P1.4
//					<2=> P0.10
//					<3=> P1.1
//		<o18.0..1> SDA0=
//					<0=> P0.7
//					<1=> P1.5
//					<2=> P0.11
//					<3=> P1.2
//</e>
//<e7> I2C1
//		<o18.6..7> SCL1=
//					<0=> P1.10
//					<1=> P1.13
//					<2=> P0.1
//					<3=> P1.8
//		<o18.4..5> SDA1=
//					<0=> P1.11
//					<1=> P1.14
//					<2=> P0.2
//					<3=> P1.9
//</e>
//<e8> I2S0
//		<o19.0..1> MCLK0=
//					<0=> P3.0
//					<1=> P2.6
//					<2=> P1.1
//		<o19.2..3> BCLK0=
//					<0=> P3.1
//					<1=> P2.5
//					<2=> P1.0
//		<o19.4..5> WS0=
//					<0=> P3.2
//					<1=> P2.4
//					<2=> P1.8
//		<o19.6..7> DOUT0=
//					<0=> P3.3
//					<1=> P2.7
//					<2=> P1.2
//		<o19.8..9> DIN0=
//					<0=> P3.4
//					<1=> P2.8
//					<2=> P1.3
//</e>
//<e9> I2S1
//		<o19.10..11> MCLK1=
//					<0=> P3.14
//					<1=> P1.7
//					<2=> P1.14
//					<3=> P2.12
//		<o19.12..13> BCLK1=
//					<0=> P3.17
//					<1=> P1.6
//					<2=> P1.13
//					<3=> P0.1
//		<o19.14..15> WS1=
//					<0=> P3.16
//					<1=> P1.5
//					<2=> P1.12
//					<3=> P1.9
//		<o19.16..17> DOUT1=
//					<0=> P3.15
//					<1=> P1.2
//					<2=> P1.15
//					<3=> P2.13
//		<o19.18..19> DIN1=
//					<0=> P3.18
//					<1=> P1.1
//					<2=> P1.19
//					<3=> P1.10
//</e>
//<e10> CT16B0
//		<o20.0..1> PWM0=
//					<0=> P0.2
//					<1=> P3.0
//					<2=> P2.6
//					<3=> P1.12
//		<o20.2..3> PWM0N=
//					<0=> P0.3
//					<1=> P1.13
//					<2=> P2.7
//					<3=> P0.12
//		<o20.4..5> PWM1=
//					<0=> P2.9
//					<1=> P3.1
//					<2=> P0.1
//					<3=> P2.5
//		<o20.6..7> PWM1N=
//					<0=> P1.14
//					<1=> P0.0
//					<2=> P2.8
//					<3=> P2.4
//		<o20.8..9> PWM2=
//					<0=> P2.7
//					<1=> P3.2
//					<2=> P0.0
//					<3=> P2.8
//		<o20.10..11> PWM2N=
//					<0=> P1.15
//					<1=> P2.6
//					<2=> P2.9
//					<3=> P0.1
//		<o20.12..13> PWM3=
//					<0=> P0.1
//					<1=> P3.3
//					<2=> P0.3
//					<3=> P2.14
//		<o20.14..15> PWM3N=
//					<0=> P0.0
//					<1=> P1.16
//					<2=> P0.2
//					<3=> P2.15
//</e>
//<e11> CT16B1
//		<o21.0> PWM00=
//					<0=> P0.0
//					<1=> P1.8
//		<o21.1> PWM01=
//					<0=> P0.1
//					<1=> P1.9
//		<o21.2> PWM02=
//					<0=> P0.2
//					<1=> P1.10
//		<o21.3> PWM03=
//					<0=> P0.3
//					<1=> P1.11
//		<o21.4> PWM04=
//					<0=> P0.4
//					<1=> P1.12
//		<o21.5> PWM05=
//					<0=> P0.5
//					<1=> P1.13
//		<o21.6> PWM06=
//					<0=> P0.6
//					<1=> P1.14
//		<o21.7> PWM07=
//					<0=> P0.7
//					<1=> P1.15
//		<o21.8> PWM08=
//					<0=> P0.8
//					<1=> P2.0
//		<o21.9> PWM09=
//					<0=> P0.9
//					<1=> P2.4
//		<o21.10> PWM10=
//					<0=> P0.10
//					<1=> P2.7
//		<o21.11> PWM11=
//					<0=> P0.11
//					<1=> P2.9
//</e>
//<e12> CT16B2
//		<o22.0..1> PWM0=
//					<0=> P2.0
//					<1=> P2.5
//					<2=> P1.8
//					<3=> P0.0
//		<o22.2..3> PWM1=
//					<0=> P2.1
//					<1=> P1.0
//					<2=> P1.7
//					<3=> P0.3
//		<o22.4..5> PWM2=
//					<0=> P2.2
//					<1=> P0.1
//					<2=> P1.6
//					<3=> P1.18
//		<o22.6..7> PWM3=
//					<0=> P2.3
//					<1=> P0.2
//					<2=> P1.10
//					<3=> P1.17
//</e>
//<e13> CT16B3
//		<o23.0..1> PWM0=
//					<0=> P1.14
//					<1=> P2.2
//					<2=> P2.6
//					<3=> P1.4
//		<o23.2..3> PWM0N=
//					<0=> P1.15
//					<1=> P2.1
//					<2=> P0.10
//					<3=> P1.3
//		<o23.4..5> PWM1=
//					<0=> P2.3
//					<1=> P1.15
//					<2=> P1.12
//					<3=> P1.5
//		<o23.6..7> PWM1N=
//					<0=> P2.4
//					<1=> P0.11
//					<2=> P1.13
//					<3=> P0.8
//</e>
//<e14> CT16B4
//		<o24.0..1> PWM0=
//					<0=> P2.7
//					<1=> P1.5
//					<2=> P0.10
//					<3=> P0.9
//		<o24.2..3> PWM0N=
//					<0=> P0.11
//					<1=> P2.6
//					<2=> P1.2
//					<3=> P0.8
//		<o24.4..5> PWM1=
//					<0=> P2.6
//					<1=> P1.4
//					<2=> P2.5
//					<3=> P1.12
//		<o24.6..7> PWM1N=
//					<0=> P0.10
//					<1=> P1.3
//					<2=> P2.4
//					<3=> P1.13
//</e>
//<e15> CT16B5
//		<o25.0..1> PWM0=
//					<0=> P2.6
//					<1=> P0.15
//					<2=> P1.1
//					<3=> P3.16
//		<o25.2..3> PWM1=
//					<0=> P2.7
//					<1=> P0.14
//					<2=> P1.2
//					<3=> P3.17
//		<o25.4..5> PWM2=
//					<0=> P2.8
//					<1=> P0.13
//					<2=> P1.0
//					<3=> P3.18
//		<o25.6..7> PWM3=
//					<0=> P2.9
//					<1=> P0.12
//					<2=> P1.18
//					<3=> P3.19
//</e>
//<o26.0>	MCU_TYPE=
//					<0=> SN32F790
//					<1=> SN32F290
*/
#define UART0_EN		0
#define UART1_EN		0
#define UART2_EN		1
#define UART3_EN		0
#define SPI0_EN			1
#define SPI1_EN			1
#define I2C0_EN			0
#define I2C1_EN			0
#define I2S0_EN			1
#define I2S1_EN			0
#define CT16B0_EN		1
#define CT16B1_EN		1
#define CT16B2_EN		1
#define CT16B3_EN		0
#define CT16B4_EN		0
#define CT16B5_EN		1

#define PFPA_UART_VAL			0x00000F00
#define PFPA_SPI_VAL			0x0000F5BF
#define PFPA_I2C_VAL			0x00000000
#define PFPA_I2S_VAL			0x00000000
#define PFPA_CT16B0_VAL		0x00003302
#define PFPA_CT16B1_VAL		0x00000700
#define PFPA_CT16B2_VAL		0x00000001
#define PFPA_CT16B3_VAL		0x00000000
#define PFPA_CT16B4_VAL		0x00000000
#define PFPA_CT16B5_VAL		0x000000AA
#define	USB_MCU						0x00000001
/*
//-------- <<< end of configuration section >>> ------------------------------
*/

/*_____ D E C L A R A T I O N S ____________________________________________*/
#if (USB_MCU == 0)
const uint32_t      BL_PFPA_UTXD0		__attribute__((at(0x000000e0))) = (PFPA_UART_VAL & 0x3);			//PFPA No of UTXD0 for Boot loader 
const uint32_t      BL_PFPA_URXD0		__attribute__((at(0x000000f0))) = (PFPA_UART_VAL>>2) & 0x3;		//PFPA No of URXD0 for Boot loader  
#endif


/*_____ F U N C T I O N S __________________________________________________*/
void PFPA_Init (void)
{
	SN_PFPA->UART = PFPA_UART_VAL;
	SN_PFPA->SPI = PFPA_SPI_VAL;
	SN_PFPA->I2C = PFPA_I2C_VAL;
	SN_PFPA->I2S = PFPA_I2S_VAL;
	SN_PFPA->CT16B0 = PFPA_CT16B0_VAL;
	SN_PFPA->CT16B1 = PFPA_CT16B1_VAL;
	SN_PFPA->CT16B2 = PFPA_CT16B2_VAL;
	SN_PFPA->CT16B3 = PFPA_CT16B3_VAL;
	SN_PFPA->CT16B4 = PFPA_CT16B4_VAL;
	SN_PFPA->CT16B5 = PFPA_CT16B5_VAL;
}
